package cn.koala.key.stock.service;

import cn.koala.key.stock.domain.dto.InventorySearch;
import cn.koala.key.stock.domain.vo.KeyInfoExcel;
import cn.koala.key.stock.domain.vo.KeyInfoVO;
import cn.koala.key.stock.domain.vo.PrintBarCodeVO;
import cn.seed.common.core.Result;
import cn.seed.common.core.ResultList;

import java.util.List;

/**
 * @description:KeyInventoryService
 * @author 32415
 * @time 2019/04/28
 **/
public interface KeyInventoryService{

    /**
     * 库存查询
     * @description list
     * @param inventorySearch
     * @return cn.seed.common.core.Result<cn.seed.common.core.ResultList<cn.koala.key.stock.domain.vo.KeyInfoVO>>
     * @Exception
     * @author shuai.xu
     * @time 2019/5/6 17:16
    */
    Result<ResultList<KeyInfoVO>> list(InventorySearch inventorySearch);

    /**
     * 库存导出
     * @description exportInventory
     * @param inventorySearch
     * @return cn.seed.common.core.Result<java.util.List<cn.koala.key.stock.domain.vo.KeyInfoVO>>
     * @Exception
     * @author shuai.xu
     * @time 2019/5/7 16:31
    */
    Result<List<KeyInfoVO>> exportInventory(InventorySearch inventorySearch);

    /**
     * 数据转换
     * @description dataProcessing
     * @param data
     * @return java.util.List<cn.koala.key.stock.domain.vo.KeyInfoExcel>
     * @Exception
     * @author shuai.xu
     * @time 2019/5/7 16:42
    */
    List<KeyInfoExcel> dataProcessing(List<KeyInfoVO> data);

    /**
     * 打印条码
     * @description printBarCode
     * @param keyBarCode
     * @return cn.seed.common.core.Result<cn.koala.key.stock.domain.vo.PrintBarCodeVO>
     * @Exception
     * @author shuai.xu
     * @time 2019/5/16 9:59
    */
    Result<PrintBarCodeVO> printBarCode(String keyBarCode);

    /**
     * 批量打印条码
     * @description batchPrintBarCode
     * @param startCode 开始位置
     * @param endCode 打印数量
     * @return java.util.List<cn.koala.key.stock.domain.vo.PrintBarCodeVO>
     * @Exception
     * @author shuai.xu
     * @time 2019/5/27 9:35
    */
    Result<List<PrintBarCodeVO>> batchPrintBarCode(Integer startCode, Integer endCode);
}
